package org.dxy.domain.event.equipment;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Value;
import org.dxy.domain.event.AggregateTypeEnum;
import org.dxy.domain.event.DomainEvent;

import java.time.LocalDateTime;

/**
 * 设备已激活事件
 * 该事件表示设备由注册状态变为"可调度可执行"状态，开始参与生产。
 * @author dxy
 * @createTime 2025/6/11 23:31
 */
@Value
@Builder
@AllArgsConstructor
public class EquipmentActivatedEvent implements DomainEvent {
    /**
     * 设备唯一标识（主键），用于唯一定位设备。
     */
    Long equipmentId;

    /**
     * 设备激活时间，标识设备状态变更的时间点。
     */
    @Builder.Default
    LocalDateTime activatedTime = LocalDateTime.now();

    /**
     * 激活前设备的状态，用于描述状态变迁前的设备情况。
     */
    String previousStatus;

    /**
     * 激活后设备的状态，通常为"可调度"或类似表示可用状态。
     */
    String currentStatus;
    
    @Override
    public Long aggregateId() {
        return equipmentId;
    }
    
    @Override
    public String aggregateType() {
        return AggregateTypeEnum.EQUIPMENT.getKey();
    }
    
    @Override
    public String eventType() {
        return EquipmentEventTypeEnum.ACTIVATED.getKey();
    }
}